// import { lessonPlan, teachingProcess, reflection } from './data.js'

// 假设从服务器获取的JSON数据，这里直接使用之前转换的JSON数据
const lessonPlan = {
    "教学单元": "任务二：特征工程理论与实践",
    "教案编号": "教案二",
    "课程名称": "机器学习与模式识别",
    "学时安排": "2学时（90分钟）",
    "授课班级": "2024人工智能工程技术1班",
    "授课地点": "智慧物联网实训室",
    "授课周数": "第11周",
    "使用技术": "特征选择、特征提取、特征变换",
    "教学内容": {
        "课前任务": [
            "复习数据预处理基础知识，包括归一化、标准化等。",
            "查阅特征工程相关文献和技术博客。",
            "准备Python数据分析环境（numpy、pandas、sklearn）。"
        ],
        "课中任务": [
            "讲解特征工程基本概念和方法（20分钟）。",
            "演示特征选择技术：过滤法、包装法、嵌入法（25分钟）。",
            "实践特征提取方法：PCA、LDA、t-SNE（25分钟）。",
            "指导特征变换实验：多项式特征、交互特征（10分钟）。",
            "总结特征工程最佳实践（10分钟）。"
        ],
        "课后任务": [
            "完成特征工程实验报告（1周内）。",
            "设计并实现特征工程优化方案（1周内）。",
            "总结特征工程在实际项目中的应用（持续）。"
        ],
        "课程思政": [
            "强调数据质量和特征工程的重要性。",
            "培养严谨的科学态度和工程素养。",
            "引导关注AI技术的社会价值。"
        ]
    },
    "具体学情分析": {
        "知识和技能基础": [
            "掌握基本的数据处理方法。",
            "了解机器学习基础概念。",
            "具备Python编程能力。"
        ],
        "认知和实践能力": [
            "对特征工程认识不够深入。",
            "实践经验有待提升。",
            "数学基础参差不齐。"
        ],
        "学习特点": [
            "对实践操作感兴趣。",
            "需要具体案例引导。",
            "善于团队协作。"
        ],
        "信息素养": [
            "具备基本的信息检索能力。",
            "需要提高技术文档阅读能力。"
        ]
    },
    "教学目标": {
        "素质目标": [
            "培养数据分析思维。",
            "提升工程实践能力。",
            "养成良好的编程习惯。"
        ],
        "知识目标": [
            "掌握特征工程基本理论。",
            "理解各类特征处理方法。",
            "熟悉特征选择和提取技术。",
            "了解特征工程最佳实践。"
        ],
        "能力目标": [
            "能够独立完成特征工程。",
            "具备特征优化能力。",
            "掌握实验分析方法。"
        ]
    },
    "教法": "理论结合实践，案例驱动教学",
    "学法": "实践操作、小组讨论、自主探究",
    "教学重点": [
        "特征选择方法的原理和应用。",
        "特征提取技术的实现过程。",
        "特征变换的数学原理。",
        "特征工程的评估方法。"
    ],
    "教学难点": [
        "特征选择算法的数学原理。",
        "降维技术的实现和优化。",
        "特征组合的策略设计。",
        "特征工程效果评估。"
    ],
    "教学重点解决办法": [
        "使用可视化工具展示特征选择过程。",
        "通过实例讲解特征提取原理。",
        "提供特征工程模板代码。",
        "设计循序渐进的实践任务。"
    ],
    "教学难点解决办法": [
        "简化数学推导，突出实践应用。",
        "采用对比实验说明原理。",
        "提供详细的代码注释。",
        "设置阶段性评估检查点。"
    ],
    "环节": {
        "课前导学": [
            "发布预习资料和任务。",
            "布置环境准备工作。",
            "组织前置知识测试。"
        ],
        "课中探知": [
            "理论讲解与案例分析。",
            "特征选择方法实践。",
            "特征提取技术实验。",
            "特征变换方法演示。",
            "效果评估与优化。",
            "总结最佳实践。"
        ],
        "课后拓展": [
            "完成实验报告。",
            "优化特征工程方案。",
            "拓展应用场景研究。"
        ]
    }
};

const teachingProcess = {
    "课前导学": {
        "特征工程基础": {
            "预习指导": {
                "教师活动": "发布特征工程预习资料",
                "学生活动": "阅读资料，准备环境",
                "教学资源技术手段": "在线课程资料、环境配置指南",
                "设计意图": "建立特征工程基础认知"
            },
            "知识检测": {
                "教师活动": "设计前置知识测试",
                "学生活动": "完成测试题目",
                "教学资源技术手段": "在线测评系统",
                "设计意图": "了解学生知识基础"
            }
        }
    },
    "课中探知": {
        "特征选择技术": {
            "理论讲解": {
                "教师活动": "讲解特征选择方法",
                "学生活动": "记录笔记，提问讨论",
                "教学资源技术手段": "PPT、代码示例",
                "设计意图": "掌握特征选择原理"
            },
            "实践操作": {
                "教师活动": "指导特征选择实验",
                "学生活动": "编程实现，分析结果",
                "教学资源技术手段": "Jupyter Notebook、数据集",
                "设计意图": "提升实践能力"
            }
        },
        "特征提取方法": {
            "算法实现": {
                "教师活动": "演示特征提取过程",
                "学生活动": "跟随实践，记录要点",
                "教学资源技术手段": "Python工具包、可视化工具",
                "设计意图": "掌握实现方法"
            },
            "效果分析": {
                "教师活动": "指导评估方法",
                "学生活动": "对比分析，总结经验",
                "教学资源技术手段": "评估指标、分析工具",
                "设计意图": "培养分析能力"
            }
        }
    }
};

const reflection = {
    "教学成效": [
        "学生掌握了特征工程基本方法",
        "提升了数据分析和处理能力",
        "培养了工程实践思维",
        "增强了团队协作意识"
    ],
    "问题与改进": [
        "数学原理讲解需要更通俗易懂",
        "实践时间可以适当增加",
        "需要更多实际应用案例",
        "评估方法可以更加多元"
    ]
};



function displayLessonPlan() {
    // 填充基本信息表格
    document.getElementById('unit-name').textContent = lessonPlan['教学单元'];
    document.getElementById('plan-number').textContent = lessonPlan['教案编号'];
    document.getElementById('course-name').textContent = lessonPlan['课程名称'];
    document.getElementById('course-hours').textContent = lessonPlan['学时安排'];
    document.getElementById('class-name').textContent = lessonPlan['授课班级'];
    document.getElementById('location').textContent = lessonPlan['授课地点'];
    document.getElementById('week-number').textContent = lessonPlan['授课周数'];
    document.getElementById('technology').textContent = lessonPlan['使用技术'];

    // 填充教学内容
    document.getElementById('pre-class').innerHTML = `<ul>${lessonPlan['教学内容']['课前任务'].map(task => `<li>${task}</li>`).join('')}</ul>`;
    document.getElementById('in-class').innerHTML = `<ul>${lessonPlan['教学内容']['课中任务'].map(task => `<li>${task}</li>`).join('')}</ul>`;
    document.getElementById('after-class').innerHTML = `<ul>${lessonPlan['教学内容']['课后任务'].map(task => `<li>${task}</li>`).join('')}</ul>`;
    document.getElementById('ideological').innerHTML = `<ul>${lessonPlan['教学内容']['课程思政'].map(task => `<li>${task}</li>`).join('')}</ul>`;

    // 填充学情分析
    document.getElementById('knowledge-base').innerHTML = `<ul>${lessonPlan['具体学情分析']['知识和技能基础'].map(point => `<li>${point}</li>`).join('')}</ul>`;
    document.getElementById('cognitive-ability').innerHTML = `<ul>${lessonPlan['具体学情分析']['认知和实践能力'].map(point => `<li>${point}</li>`).join('')}</ul>`;
    document.getElementById('learning-features').innerHTML = `<ul>${lessonPlan['具体学情分析']['学习特点'].map(point => `<li>${point}</li>`).join('')}</ul>`;
    document.getElementById('information-literacy').innerHTML = `<ul>${lessonPlan['具体学情分析']['信息素养'].map(point => `<li>${point}</li>`).join('')}</ul>`;

    // 填充教学目标
    document.getElementById('quality-goals').innerHTML = `<ul>${lessonPlan['教学目标']['素质目标'].map(goal => `<li>${goal}</li>`).join('')}</ul>`;
    document.getElementById('knowledge-goals').innerHTML = `<ul>${lessonPlan['教学目标']['知识目标'].map(goal => `<li>${goal}</li>`).join('')}</ul>`;
    document.getElementById('ability-goals').innerHTML = `<ul>${lessonPlan['教学目标']['能力目标'].map(goal => `<li>${goal}</li>`).join('')}</ul>`;

    // 填充教学方法与学法
    document.getElementById('teaching-method').textContent = lessonPlan['教法'];
    document.getElementById('learning-method').textContent = lessonPlan['学法'];

    // 填充教学重难点及解决办法
    document.getElementById('key-points').innerHTML = `<ul>${lessonPlan['教学重点'].map(point => `<li>${point}</li>`).join('')}</ul>`;
    document.getElementById('difficulties').innerHTML = `<ul>${lessonPlan['教学难点'].map(point => `<li>${point}</li>`).join('')}</ul>`;
    document.getElementById('key-solutions').innerHTML = `<ul>${lessonPlan['教学重点解决办法'].map(solution => `<li>${solution}</li>`).join('')}</ul>`;
    document.getElementById('difficulty-solutions').innerHTML = `<ul>${lessonPlan['教学难点解决办法'].map(solution => `<li>${solution}</li>`).join('')}</ul>`;

    // 填充教学环节
    document.getElementById('pre-guidance').innerHTML = `<ul>${lessonPlan['环节']['课前导学'].map(task => `<li>${task}</li>`).join('')}</ul>`;
    document.getElementById('in-class-exploration').innerHTML = `<ul>${lessonPlan['环节']['课中探知'].map(task => `<li>${task}</li>`).join('')}</ul>`;
    document.getElementById('after-class-extension').innerHTML = `<ul>${lessonPlan['环节']['课后拓展'].map(task => `<li>${task}</li>`).join('')}</ul>`;

    // 填充第二个表格（课前导学）
    fillTeachingProcessTable(2);

    // 填充第三个表格（课中探知）
    fillTeachingProcessTable(3);

    // 填充第四个表格（反思思政）
    fillReflectionTable();
}






function fillTeachingProcessTable(tableIndex) {
    const processTable = document.querySelector(`.info-table:nth-of-type(${tableIndex})`);
    if (processTable) {
        const rows = processTable.querySelectorAll('tr');
        // 从第三行开始是数据行（前两行是表头）
        for (let i = 3; i < rows.length; i++) {
            const cells = rows[i].querySelectorAll('td');
            if (cells.length >= 5) {  // 确保有足够的单元格
                // 获取当前行的阶段(phase)值，如果当前单元格为空则从上一行获取
                const phase = cells[0].textContent || cells[0].closest('tr').previousElementSibling?.querySelector('td:first-child')?.textContent;
                // 获取当前行的主题(topic)值，如果当前单元格为空则从上一行获取
                const topic = cells[1].textContent || cells[1].closest('tr').previousElementSibling?.querySelector('td:nth-child(2)')?.textContent;
                console.log('loop rows', 'phase', phase, 'topic', topic);
                // 遍历当前phase和topic下的所有task，检查是否需要合并单元格
                if (phase && topic && teachingProcess[phase]?.[topic]) {
                    const tasks = Object.keys(teachingProcess[phase][topic]);
                    console.log('tasks', tasks);
                    tasks.forEach(task => {
                        console.log('phase', phase, 'topic', topic, 'task', task)
                        if (teachingProcess[phase]?.[topic]?.[task]) {
                            const data = teachingProcess[phase][topic][task];
                            console.log('data', data);
                            cells[3].textContent += data["教师活动"];
                            cells[4].textContent += data["学生活动"];
                            cells[5].textContent += data["教学资源技术手段"];
                            cells[6].textContent += data["设计意图"];
                        }
                    });
                }

            }
        }
    }
}

function fillReflectionTable() {
    const reflectionTable = document.querySelector('.info-table:nth-of-type(4)');
    if (reflectionTable) {
        // 下标从1开始
        const rows = reflectionTable.querySelectorAll('tr');
        rows[2].querySelector('.label-content').innerHTML = reflection["教学成效"].map(item => `<div>${item}</div>`).join('');
        rows[3].querySelector('.label-content').innerHTML = reflection["问题与改进"].map(item => `<div>${item}</div>`).join('');
    }
}

// 使用render.js 时需注释
window.onload = displayLessonPlan;

// 添加模块导出
module.exports = {
    lessonPlan,
    teachingProcess,
    reflection,
    displayLessonPlan,
    fillTeachingProcessTable,
    fillReflectionTable
};